/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tp1_resoprob;

import java.util.ArrayList;


/**
 *
 * @author amerer & dleang
 */
public class ArbreNaire<T> {
    
    public Noeud<T> racine;
    public Noeud<T> vue;
    
    //Constructeur par défaut
    public ArbreNaire()
    {
        this.racine=null;
        this.vue=null;        
    }

    //Constructeur avec param: Racine typée et initialisée
    public ArbreNaire(T inf_racine)
    {
        ArrayList<Noeud <T>> liste = new ArrayList<Noeud <T>>();
        Noeud<T> node = new Noeud(inf_racine,null,liste);
        this.racine=node;
        this.vue=node;  
    }
    
    public void initRacine (T item)
    {
        ArrayList<Noeud <T>> liste = new ArrayList<Noeud <T>>();
        this.racine=new Noeud(item,null,liste);
        this.vue=this.racine;     
    }
    
    public void addFils (T item)
    {
        ArrayList<Noeud <T>> liste = new ArrayList<Noeud <T>>();
        Noeud<T> fils = new Noeud(item,this.vue,liste);    
        vue.getFils().add(fils);
    }
    
    
    public T getItem()
    {
        return (vue.getInfo());
    }
    
    public boolean isRacine()
    {
        if(this.racine==this.vue)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    public boolean isNoeudFeuille()
    {
         if(this.vue.getFils().isEmpty())
         {
                return true;
         }
         else
         {
             return false;
         }
    }
    
    public int getNbFils()
    {
        return (this.vue.getFils().size());  
    }
    
    public void goToRacine()
    {
        this.vue=this.racine;
    }
    
    public void goToFils(int i)
    {
        if((getNbFils()-1)>=i&&i>=0)
        {
            if(!isNoeudFeuille())
            {
               this.vue=this.vue.getFils().get(i); 
            }
            else
            {
                System.out.println("Pas de fils");
            }
        }
        else
        {
            System.out.println("Ce fils n'existe pas");
        }
            
    }
    
    public void goToPere()
    {
        if(!isRacine())
        {
           this.vue=this.vue.getPere();  
        }
        else
        {
            System.out.println("Pas de père");
        }
    }
    
    public void suppressNoeud()
    {
        //Ne pas implémenter 
    }
    
    
    
           
           
    
    
}
